保护JavaScript源代码


应用中JavaScript源代码能够编译为本地代码进行保护 , NW.js能够加载编译之后的代码 . 应用作为产品发布时可以将代码进行编译 .

编译

JS源代码编译为本地代码需要使用nwjc工具 , 同时需要提供SDK构造方式的NW .

nwjc source.js binary.bin

*.bin文件需要发布到应用中 , 可以任意命名bin文件 .

加载已编译JS文件

nw.Window.get().evalNWBin(frame, 'binary.bin');

win.evalNWBin()方法中的参数与Window.eval()方法相同 , 第一个参数为目标frame , null为主frame , 第二个参数为已编译的bin文件 .

已编译代码在[浏览器环境](JavaScript Contexts in NW.js.md#browser-context)中执行 . 可以像其他运行在浏览器环境中的其他脚本 , 使用页面APIs(如DOM)以及[NW.js API和Node API](JavaScript Contexts in NW.js.md#access-nodejs-and-nwjs-api-in-browser-context) .

已知问题

已编译代码比普通JS代码运行慢30%在V8工作台 . 其他未编译JS代码不会受到影响 .

NW.js中不能跨平台使用已编译代码 , 同时不能兼容不同版本的已编译代码 . 这样打包应用过程需要在不同平台中使用nwjc .